/**
 * 任务相关 API
 */

import { get, post } from '@/utils/request'
import type { PipelineInstance, TaskEntity, InstanceStatistics, TaskLog } from '@/types'

/**
 * 获取流水线实例详情
 */
export function getInstance(id: number): Promise<PipelineInstance> {
  return get<PipelineInstance>(`/api/Task/instance/${id}`)
}

/**
 * 获取实例的所有任务
 */
export function getInstanceTasks(id: number): Promise<TaskEntity[]> {
  return get<TaskEntity[]>(`/api/Task/instance/${id}/tasks`)
}

/**
 * 获取实例统计信息
 */
export function getInstanceStatistics(id: number): Promise<InstanceStatistics> {
  return get<InstanceStatistics>(`/api/Task/instance/${id}/statistics`)
}

/**
 * 获取正在运行的实例列表
 */
export function getRunningInstances(): Promise<PipelineInstance[]> {
  return get<PipelineInstance[]>('/api/Task/running')
}

/**
 * 根据 ID 获取任务详情
 */
export function getTaskById(id: number): Promise<TaskEntity> {
  return get<TaskEntity>(`/api/Task/${id}`)
}

/**
 * 获取任务日志
 */
export function getTaskLogs(id: number): Promise<TaskLog[]> {
  return get<TaskLog[]>(`/api/Task/${id}/logs`)
}

/**
 * 取消任务
 */
export function cancelTask(id: number): Promise<void> {
  return post<void>(`/api/Task/${id}/cancel`)
}

/**
 * 重试任务
 */
export function retryTask(id: number): Promise<void> {
  return post<void>(`/api/Task/${id}/retry`)
}
